// Copyright [2020] <unknown>
#include <bits/stdc++.h>
using namespace std;
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define dbg(x...) { cerr << "\033[32;1m" << #x << " -> "; err(x); }
void err() { cerr << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }
#else
#define dbg(...)
#endif

#define sz(x) ((int)x.size())

typedef long long LL;

const int N = 2e5+50;

int n, k, c;

char s[N], s2[N];
vector<int> go(char s[], int n, int k, int c) {
    vector<int> a;
    for (int i=0; i<n; ++i) {
        if (s[i] == 'x')
            continue;
        a.push_back(i);
        // dbg(i, i+c);
        i += c;
    }
    a.resize(k);
    if (sz(a) >= k)
        return a;
    else
        return vector<int>();
}

int p[N], q[N];

int main(int argc, char const *argv[]) {
    // code
    scanf("%d%d%d", &n, &k, &c);
    scanf("%s", s+1);
    for (int i=1; i<=n; ++i) {
        p[i] = p[i-1];
        if (s[i] == 'x')
            continue;
        p[i]++;
        for (int j=i+1; j<=i+c && j<=n; ++j)
            p[j] = p[i];
        i = i+c;
    }
    for (int i=n; i>=1; --i) {
        q[i] = q[i+1];
        if (s[i] == 'x')
            continue;
        q[i]++;
        for (int j=i-1; j>=i-c && j>=1; --j)
            q[j] = q[i];
        i = i-c;
    }

    for (int i=1; i<=n; ++i) {
        if (s[i] == 'o' && p[i-1] + q[i+1] == k-1)
            printf("%d\n", i);
    }
    return 0;
}
